
/**
 * 添加tags
 * @param state
 * @param tag
 */
const setTagsList = (state, tag) => {
  // 已存在标签 = 修改
  const isHave = state.tagsList.some(t => {
    if (t.sortType === tag.sortType) {
      t.keyword = tag.keyword
      if (tag.filterType === 'input') {
        // input搜索 可直接展示
        t.showName = tag.sortName + ':' + tag.keyword
      } else if (tag.filterType === 'checkbox') {
        // CheckBox多选 需要截取展示
        let showName = ''
        // 选中一个 不加逗号
        tag.keyword.length > 1
          ? (tag.keyword || []).map(k => {
            showName += k.selectName + ','
          })
          : showName = tag.keyword[0].selectName
        showName.length > 15
          ? t.showName = tag.sortName + ':' + showName.slice(0, 15) + '...'
          : t.showName = tag.sortName + ':' + showName
      } else if (tag.filterType === 'fromTo') {
        t.showName = tag.sortName + ':' + tag.keyword
      }
    }
    return t.sortType === tag.sortType
  })
  // 不存在标签 = 添加
  if (!isHave) {
    // input 输入搜索
    if (tag.filterType === 'input') {
      state.tagsList.push({ filterType: tag.filterType, sortType: tag.sortType, keyword: tag.keyword, sortName: tag.sortName, showName: tag.sortName + ':' + tag.keyword })
    } else if (tag.filterType === 'checkbox') {
      // checkbox 多选搜索
      let showName = ''
      let sortName = ''
      // 选中一个 不加逗号
      tag.keyword.length > 1
        ? (tag.keyword || []).map(k => {
          showName += k.selectName + ','
        })
        : showName = tag.keyword[0].selectName
      // length < 15 不加...
      showName.length > 15
        ? sortName = tag.sortName + ':' + showName.slice(0, 15) + '...'
        : sortName = tag.sortName + ':' + showName
      console.log(tag)
      state.tagsList.push({ filterType: tag.filterType, sortType: tag.sortType, keyword: tag.keyword, sortName: tag.sortName, showName: sortName })
    } else if (tag.filterType === 'fromTo') {
      state.tagsList.push({ filterType: tag.filterType, sortType: tag.sortType, keyword: tag.keyword, sortName: tag.sortName, showName: tag.sortName + ':' + tag.keyword })
    }
  }
}
// 单个删除 tags
const removeTag = (state, tag) => {
  state.tagsList.forEach((t, index) => {
    if (t.sortType === tag.sortType) {
      state.tagsList.splice(index, 1)
    }
  })
}

/**
 * 通过tag遍历搜索关键字
 * @param tagsList
 * @returns {{}}
 */
const filterKeyword = (tagsList) => {
  const selectKeyword = {}
  tagsList.map(k => {
    // 判断多选时，遍历取id
    if (k.filterType === 'checkbox') {
      const selectList = []
      k.keyword.map(kk => {
        selectList.push(kk.selectId)
      })
      selectKeyword[k.sortType] = selectList
    } else if (k.filterType === 'fromTo') {
      selectKeyword['startIndex'] = k.keyword.split('~')[0]
      selectKeyword['endIndex'] = k.keyword.split('~')[1]
    } else {
      // 非多选时直接赋值
      selectKeyword[k.sortType] = k.keyword
    }
  })
  return selectKeyword
}

/**
 * @description mutations方法
 * @function setCurrentPage,setTableList,setSortData,setTagsList,removeTag,cleanTags
 */
const mutations = {
  setCurrentPage(state, currentPage) {
    state.currentPage = currentPage
  },
  setTableList(state, { tableName, tableList = [], totalCount }) {
    state[tableName] = tableList
    state.totalCount = totalCount
  },
  setSortData(state, sortData) {
    state.sortData = sortData
  },
  setTagsList(state, tag) {
    setTagsList(state, tag)
  },
  // 删除单个tag
  removeTag(state, tag) {
    removeTag(state, tag)
  },
  cleanTags(state) {
    state.tagsList = []
    state.sortData = {}
  }
}

/**
 * @description 表格 tag 搜索 state 方法
 * @function filterKeyword,mutations
 */
export default {
  filterKeyword,
  mutations
}

